<?php

/**
 * Description of entityManager
 *
 * @author Federico del valle (quaidy@gmail.com)
 */
class entityManager {
  
  /**
   * Devuelve un array con todos los objetos instanciados
   *
   * @param string $nombreEntidad entidad a tomar
   * @param string $condicion condicion del where de los objetos a traer
   * @param int $limite cantidad de objetos a traer
   * @param bool $contar devuelve la cantidad de objetos
   * @return nombreEntidad array de objetos
   */
  public static function getAllLoaded($nombreEntidad,$condicion="", $limite="", $contar = false) {
    $entidad = new $nombreEntidad();
    $tabla = $entidad->getDBTable();
    $query = "SELECT * FROM " . $tabla;
    if (!empty($condicion)) {
      $query .= " WHERE " . $condicion;
    }
    if (!empty($limite)) {
      $query .= " LIMIT " . $limite;
    }

    $rs = conexionManager::ejecutarQuery($query);
   
    $filas = array();
    while (($row = $rs->get_row()) != false) {
      $entidad = new $nombreEntidad();
      $entidad->loadByArray($row);
      $filas[] = $entidad;
    }
    return $filas;
  }

  /**
   * Devuelve un array con todos los datos del objeto
   *
   * @param string $nombreEntidad entidad a tomar
   * @param string $condicion condicion del where de las filas a traer
   * @param int $limite cantidad de filas a traer
   * @return nombreEntidad array de objetos
   */
  public static function getAll($nombreEntidad,$condicion="",$limite="") {
    $entidad = new $nombreEntidad();
    $tabla = $entidad->getDBTable();

    $query = "SELECT * FROM " . $tabla;
    if (!empty($condicion)) {
      $query .= " WHERE " . $condicion;
    }
    if (!empty($limite)) {
      $query .= " LIMIT " . $limite;
    }
   
    $rs = conexionManager::ejecutarQuery($query);
    $filas = array();
    while (($row = $rs->get_row()) != false) {
      $filas[] = $row;
    }
    return $filas;    
  }

  public static function count($nombreEntidad,$condicion="",$limite="") {
    $entidad = new $nombreEntidad();
    $tabla = $entidad->getDBTable();
    $query = "SELECT  COUNT(*) as conteo FROM " . $tabla;

    if (!empty($condicion)) {
      $query .= " WHERE ".$condicion;
    }
    if (!empty($limite)) {
      $query .= " LIMIT ".$limite;
    }
    $rs = conexionManager::ejecutarQuery($query);
    $row = $rs->get_row();
    return (int)$row["conteo"];
  }

}
?>
